package com.itbaizhan.paymentdemo.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 统一结果封装类
 * @param <T>
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BaseResult<T> {



    //状态码
    private Integer code;

    //响应信息
    private String message;

    //返回的信息
    private T data;

    //构建请求成功结果
    public static <T> BaseResult<T> ok(){
        return new BaseResult<>(CodeEnum.SUCCESS.getCode(),CodeEnum.SUCCESS.getMessage(),null);

    }

    //构建请求成功结果  返回有数据
    public static <T> BaseResult<T> ok(T data){
        return new BaseResult<>(CodeEnum.SUCCESS.getCode(),CodeEnum.SUCCESS.getMessage(),data);

    }

    //异常   从枚举中获得哪个异常
    public static <T> BaseResult<T> error(CodeEnum codeEnum){
        return new BaseResult<>(codeEnum.getCode(),codeEnum.getMessage(),null);
    }
}
/*
* 统一接口返回类的意义
基于java的前后端分离项目中，前端获取后端controller层接口返回的JSON格式的数据，并展示出来。
* 通常为了提高代码质量，会将后端返回的数据进行统一的格式处理。*/